import java.util.HashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 17655
 * Date: 2025-02-15
 * Time: 23:33
 */
public class test2 {
    /**
     * LeetCode 判定是否互为字符重排
     */

    /**
     * 哈希方法：   时间复杂度O(N),空间复杂度O（N）
     * @param s1
     * @param s2
     * @return
     */
    public boolean CheckPermutation1(String s1, String s2) {
        if(s1.length()!=s2.length()){
            return false;
        }

        Map<Character,Integer> hash = new HashMap<>();;
        for(int i=0;i<s1.length();i++){
            char ch = s1.charAt(i);
            hash.put(ch,hash.getOrDefault(ch,0)+1);
        }
        for(int i=0;i<s2.length();i++){
            char ch = s2.charAt(i);
            hash.put(ch,hash.getOrDefault(ch,0)-1);
        }
        for(int val:hash.values()){
            if(val!=0){
                return false;
            }
        }
        return true;
    }

    /**
     * 数组方法：  时间复杂度O（N），空间复杂度O（1）
     * @param s1
     * @param s2
     * @return
     */
    public boolean CheckPermutation2(String s1, String s2) {
        if(s1.length()!=s2.length()){
            return false;
        }

        int[] hash = new int[26];
        for(int i=0;i<s1.length();i++){
            int ch = s1.charAt(i)-'a';
            hash[ch]++;
        }
        for(int i=0;i<s2.length();i++){
            int ch = s2.charAt(i)-'a';
            hash[ch]--;
        }
        for(int i=0;i<s1.length();i++){
            int ch = s2.charAt(i)-'a';
            if(hash[ch]!=0){
                return false;
            }
        }
        return true;
    }
}
